# 
# Kapitel 2: 
# Erzwungene Stabschwingungen, Erregung durch eine Einzelkraft F(a,t)
#  2017  Friedrich U. Mathiak, 
# mathiak@mechanik-info.de
# 
> restart: with(LinearAlgebra): with(plots): 
# noch Beispiel 2-8:
# 
# 
# Der in der obigen Abbildung dargestellte Stab wird durch die Linienkraft F(t) = F0 sin t belastet. Das System startet aus der Ruhelage. Gesucht werden smtliche Zustandsgren. 
> 
;
> Proc_Calc_03:=proc(rho,E,A,l,a,F0,Omega,nE,tE)
> #------------------------------------------------------------------------
> #Eingabe: 
> #      rho: Dichte in [kg/m^3]
> #        E: Elastizittsmodul in [N/m^2]
> #        A: Elastizittsmodul in [N/m^2]
> #        l: Lnge der Saite in [m]
> #        a: Zentrum der konstanten Linienkraft in [m]
> #       F0: Erregerkraft in [N]
> #    Omega: Erregerkraftfrequenz in [s-1]
> #       nE: Anzahl der zu bercksichtigenden Reihenglieder
> #       tE: Simulationszeit in [s]
> #Ausgabe:
> #        u: Auslenkung der Stabelemente
> #        v: Geschwindigkeit der Stabelemente
> #        N: Normalkraft
> #-----------------------------------------------------------------------------
> local lam,mu,cL,omn,etan,alpha,SU,eps,n,f,u0,para,p1,p2,p3;
> global u,v,N,Flag;
> description "Der Stab konstanten Querschnitts unter Einzelkraftbelastung im Feld";
> Flag:=1;
> if a < 0 or a > l then
>   Flag:=0;
>   print(`Laststellung berprfen, !!!Abbruch der Berechnung!!!`);
> return; end;
> mu:=rho*A; lam:=(2*n-1)*Pi/2; cL:=sqrt(E/rho); omn:=lam/l*cL; etan:=Omega/omn;
> alpha:=a/l;
> SU:=0.; eps:=1.*10^(-6);
> for n to nE do
>   if abs(eval(etan)-1.) < eps then
>     f:=0.5*(sin(omn*t)-omn*t*cos(omn*t));
>   else;
>     f:=(etan*sin(omn*t)-sin(etan*omn*t))/(etan^2-1);
>   end if;
>   SU:= SU + map(eval,sin(lam*alpha)*sin(lam*xi)*f/lam^2);
> end do; 
> u0:=2.*F0*l/mu/cL^2;
> u :=u0*SU;
> v :=diff(u,t);
> N :=E*A/l*diff(u,xi);
> #Ausgabe der Ergebnisse
> para:=xi=0..1,frames=250,thickness=2,gridlines=true,titlefont = ["ARIAL", 15],  labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 10],axesfont = ["HELVETICA", "ROMAN", 8],axes=boxed:
> p1:=plots[animate](plot,[u ,para,title = "\nAuslenkung\n",     labels = [" = x/","u(,t)"]],t=0..tE):
> p2:=plots[animate](plot,[v ,para,title = "\nGeschwindigkeit\n",labels = [" = x/","v(,t)"]],t=0..tE):
> p3:=plots[animate](plot,[N ,para,title = "\nNormalkraft\n",    labels = [" = x/","N(,t)"]],t=0..tE):
> plots[display](Matrix(1,3,[p1,p2,p3]));
> end proc:
> 
;
# Mit den Werten des Beispiels
> rho:=2100.; A:=0.01; E:=3.*10^(10); l:=8.; a:=6.; F0:=100000.; Omega:=600.; nE:=20;  tE:=0.1; 
# rufen wir die Prozedur auf:
> Proc_Calc_03(rho,E,A,l,a,F0,Omega,nE,tE);
# Von Interesse sind noch die Normalkrfte an den beiden Stabenden, die Auslenkung und die Geschwindigkeit am rechten Stabende :
> if Flag = 1 then
> p4:=plot([subs(xi=0,N),subs(xi=1,N)],t=0..tE,thickness=2,gridlines=true,title = "\nNormalkrfte an den Stabenden\n",labels = ["t", "N(t)"],titlefont = ["ARIAL", 15],  labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 12],axesfont = ["HELVETICA", "ROMAN", 10],legend = ["N(x=0,t)", "N(x=l,t)"],legendstyle = [font = ["HELVETICA", 10], location = bottom],color=[black,blue],axes=boxed,gridlines=true):
> p5:=plot(subs(xi=1,u),t=0..tE,thickness=2,gridlines=true,title = "\nAuslenkung des rechten Stabendes\n",labels = ["t", "u(1,t)"],titlefont = ["ARIAL", 15],  labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 12],axesfont = ["HELVETICA", "ROMAN", 10],axes=boxed,gridlines=true):
> p6:=plot(subs(xi=1,v),t=0..tE,thickness=2,gridlines=true,title = "\nGeschwindigkeit des rechten Stabendes\n",labels = ["t", "v(1,t)"],titlefont = ["ARIAL", 15],  labeldirections = ["horizontal", "vertical"], labelfont = ["HELVETICA", 12],axesfont = ["HELVETICA", "ROMAN", 10],axes=boxed,gridlines=true):
> end if;
> 
;
